#include "ObtenerContenidosArchivo.h"
#include <sstream>
#include <iomanip>


void BinToHex(uint8_t * datos, unsigned int size, std::string& buff){
	std::ostringstream aux;
	for (unsigned int i = 0; i < size; ++i) {
		int j;
		if ((int) datos[i] < 0) j = datos[i] + 256;
		else j = datos[i];
		aux << std::setfill('0') << std::setw(2) << std::hex << j;
	}

	buff = aux.str();
}

std::string obtenerContenidosArchivo(const char *nombreArchivo) {
	std::ifstream arch(nombreArchivo, std::ios::in | std::ios::binary);
	if (!arch) throw MyException("No se pudo abrir el archivo para obtener sus contenidos.");

	std::string buffer;
	arch.seekg(0, std::ios::end);
	buffer.resize(arch.tellg());
	arch.seekg(0, std::ios::beg);
	arch.read(&buffer[0], buffer.size());
	arch.close();

	std::string buff;

	BinToHex((uint8_t*) &buffer[0], buffer.size(), buff);

	return(buff);
}
